package beanstao.util.log;


/**
 * 日志接口
 * <p>
 * 虽然Log4j支持很多的错误级别，但同时在Log4j的API中也只建议只使用不超过四个级别。 <br>
 * 优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。 <br>
 * <b>我们JAVA框架中将采用4个级别：ERROR > WARN > INFO > DEBUG</b>
 * <p>
 * 1. logDebug 为调试做准备的细粒度事件信息。本类型事件不会被持久化。<br>
 * 2. logInfo 粗粒度级别上突出强调应用程序的运行过程。<br>
 * 3. logWarn 表明会出现潜在错误的情形。<br>
 * 4. logError 指出虽然发生错误事件，但仍然不影响系统的继续运行。<br>
 */
public interface ILog
{

	/**
	 * 指出虽然发生错误事件，但仍然不影响系统的继续运行。
	 * 
	 * @param message
	 *            错误信息
	 */
	void logError(Object message);

	/**
	 * 指出虽然发生错误事件，但仍然不影响系统的继续运行。
	 * 
	 * @param message
	 *            错误信息
	 * @param t
	 *            错误时被抛出的异常
	 */
	void logError(Object message, Throwable t);

	/**
	 * 表明会出现潜在错误的情形。
	 * 
	 * @param message
	 *            错误信息
	 */
	void logWarn(Object message);

	/**
	 * 表明会出现潜在错误的情形。
	 * 
	 * @param message
	 *            错误信息
	 * @param t
	 *            错误时被抛出的异常
	 */
	void logWarn(Object message, Throwable t);

	/**
	 * 粗粒度级别上突出强调应用程序的运行过程。
	 * 
	 * @param message
	 *            错误信息
	 */
	void logInfo(Object message);

	/**
	 * 粗粒度级别上突出强调应用程序的运行过程。
	 * 
	 * @param message
	 *            错误信息
	 * @param t
	 *            错误时被抛出的异常
	 */
	void logInfo(Object message, Throwable t);

	/**
	 * 为调试做准备的细粒度事件信息。本类型事件不会被持久化。
	 * 
	 * @param message
	 *            错误信息
	 */
	void logDebug(Object message);

	/**
	 * 为调试做准备的细粒度事件信息。本类型事件不会被持久化。
	 * 
	 * @param message
	 *            错误信息
	 * @param t
	 *            错误时被抛出的异常
	 */
	void logDebug(Object message, Throwable t);

}
